java io |
您所在的位置:网站首页 › ebook reader是什么意思啊 › java io |
在前几篇文章中一直讲的都是InputStream,这是操作字节流的类,然而我们在程序中往往要从文件等stream中读取字符信息,如果只用InputStream能否读取字符信息呢?当然可以。但是这涉及到了一个编码和解码的问题,传输双方必须才用同一种编码方式才能正确接收,这就导致每次在传输时,传输方需要做这么几件事: 1)将需要传输的字符编码成指定字节 2)传输字节 接收方需要做这么几件事: 1)接收字节 2)将字节解码成对应的字符 我们看一下下面的例子: 我在对应目录有一个文件,这个文件是按照utf-8编码的,现在利用InputStream读取到一个byte数组中,如果我们想要读取到文件的内容,还需要继续转码成utf-8格式的字符串。 import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.charset.Charset; /** * Created by zhaohui on 16-10-14. */ public class Code { public static void main(String[] args) { try { FileInputStream inputStream = new FileInputStream("/home/zhaohui/tmp/zhaohui"); byte[] buf = new byte[100]; int length = inputStream.read(buf); System.out.println("the length of bytes is " + length); // 将字节数组中指定位置的字节转码成对应的字符串 String content = new String(buf, 0, length, Charset.forName("utf-8")); System.out.println("the content is " + content); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }输出: the length of bytes is 16 the content is 你好吗? 从上面的例子中,我们看到只有InputStream就能解决传输字符串的问题了,但是每次都要先读成byte字节,再进行转码,麻烦,能不能直接传字符呢?????
答案是:不能!!! 计算机只认识0和1,也就是byte,只能传输byte。 但是别人的博客都说Reader和Writer神马的能传啊?这是理解角度的不同,我就认为不能传字符,爱咋咋地!
好的,我现在就正式介绍这个“能”传字符的Reader( |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |